package cn.edu.lcu.cs.designpattern.composite.safety;

import lombok.Data;

/**
 * 安全的组合模式，与透明模式相对
 */
@Data
public abstract class Node {
    public static final String NODE_TYPE_LEAF = "leaf";
    public static final String NODE_TYPE_BRANCH = "branch";
    private String type;
    private String value;
    private Node parent; // 父节点

    public void doSomething() {
        System.out.println("叶子与分枝结点共同拥有的操作");
    }

    /**
     * 遍历节点及所有后代节点。无论是树枝还是叶子，形式上具有一致的访问性。
     */
    public abstract void traversal();

    /**
     * 打印当前节点的值
     */
    public abstract void print();
}
